package com.shiyang.seckill.service;

import com.shiyang.seckill.domain.OrderInfo;
import com.shiyang.seckill.domain.SeckillUser;
import com.shiyang.seckill.vo.GoodsVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

/**
 * @author shiyang
 * @create 2020-07-20 10:48 下午
 */
@Service
public class SeckillService {

    // 一般在对应的service引入自己对应的dao 如果要使用其它service的dao 要通过引入对应的service来解决
    // 主要是逻辑清晰 方便管理
//    @Autowired
//    GoodsDao goodsDao;

    @Autowired
    GoodsService goodsService;
    @Autowired
    OrderService orderService;

    @Transactional // 这个方法必须是原子操作
    public OrderInfo seckill(SeckillUser user, GoodsVo goods) {
        // 减库存 下订单 写入秒杀订单
        goodsService.reduceStock(goods);
        return orderService.createOrder(user, goods);
    }
}
